package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.UserPageVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.*;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.*;
import com.ssy.lingxi.member.merchant.model.vo.manage.request.MemberManagePageByNameVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 渠道能力 - 业务员管理服务接口
 *
 * @author 万宁
 * @version 2.0.0
 * @date 2021-04-14
 */
public interface IMemberAbilitySalesService {

    /**
     * 分页查询已经绑定渠道的业务员列表
     *
     * @param headers HttpHeader信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberSalesPageQueryVO>> pageMemberSales(HttpHeaders headers, MemberSalesPageVO pageVO);

    /**
     * “选择业务员” - 分页查询业务员列表
     *
     * @param headers HttpHeader信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberSalesSelectQueryVO>> pageSelectMemberSales(HttpHeaders headers, UserPageVO pageVO);

    /**
     * 新增业务员
     *
     * @param headers HttpHeader信息
     * @param idVO    接口参数
     * @return 操作结果
     */
    Wrapper<MemberSalesGetVO> addMemberSales(HttpHeaders headers, MemberUserIdVO idVO);

    /**
     * 查询业务员基本信息
     *
     * @param headers HttpHeader信息
     * @param idVO    接口参数
     * @return 查询结果
     */
    Wrapper<MemberSalesGetVO> getMemberSales(HttpHeaders headers, MemberUserIdVO idVO);

    /**
     * 分页查询渠道会员列表
     *
     * @param headers      HttpHeader信息
     * @param pageByNameVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberSalesBindChannelQueryVO>> pageChannels(HttpHeaders headers, MemberManagePageByNameVO pageByNameVO);

    /**
     * 查询业务员信息、分页查询绑定的渠道列表
     *
     * @param headers HttpHeader信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<MemberSalesChannelQueryVO> getSalesAndPageChannels(HttpHeaders headers, MemberSalesChannelPageVO pageVO);

    /**
     * 业务员绑定渠道列表
     *
     * @param headers       HttpHeader信息
     * @param bindChannelVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> bindSalesChannels(HttpHeaders headers, com.ssy.lingxi.member.merchant.model.vo.maintenance.request.MemberSalesBindChannelVO bindChannelVO);

    /**
     * 解除业务员与渠道的绑定
     *
     * @param headers         HttpHeader信息
     * @param unBindChannelVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> unBindSalesChannel(HttpHeaders headers, MemberSalesUnBindChannelVO unBindChannelVO);

    /**
     * 删除业务员
     *
     * @param headers HttpHeader信息
     * @param idVO    接口参数
     * @return 操作结果
     */
    Wrapper<Void> deleteSales(HttpHeaders headers, MemberUserIdVO idVO);

    /**
     * 返回组织机构
     *
     * @param headers 头部信息
     * @return 组织机构列表
     */
    Wrapper<List<String>> getMemberOrganizationList(HttpHeaders headers);

}
